// TODO: var -> variable: 声明当前作用域内的变量(函数/全局作用域)
// var a = 5
// console.log(a)
// // delete a
// console.log(window.a) // 全局变量与window的属性挂钩

// TODO: 不使用 var 相当于给属性进行赋值
// b = 6
// console.log(b)
// // delete b
// console.log(window.b)

// TODO:
// let a = 5
// console.log(a)
// console.log(window.a)

// TODO:
// let a = 5
// let a = 6
// console.log(a)

// console.log(a)
// var a = 5

// var a
// console.log(a)
// a = 5

// console.log(a)
// let a = 5

// TODO: 暂时性死区: 防止变量在声明之前去使用
// var a = 5
// if (true) {
//     a = 6
//     let a
// }

// function foo(a = 2, b = a){
//     console.log(a, b)
// }
// foo()

// for (let i = 0; i < 3; i++) {
//     console.log('循环内:' + i)
// }
// console.log('循环外:' + i)

// if (false) {
//     let a = 5
// }
// console.log(a)

// if (true) {
//     let a = 5
// }


// for (var i = 0; i < 3; i++) {
//     (function(j){
//         setTimeout(function(){
//             console.log(j)
//         })
//     })(i)
// }
for (let i = 0; i < 3; i++) {
    setTimeout(function () {
        console.log(i)
    })
}